import axios from 'axios';
//由于小程序使用的是wx.request发送请求的,所以要通过下面的适配器来进行适配
import mpAdapter from "axios-miniprogram-adapter";
import onekeyLogin from "@/utils/onkeylogin.js"
axios.defaults.adapter = mpAdapter;
//如果不开发H5页面  app端和小程序端不会出现跨域的问题所以不需要配置代理
// console.log(import.meta.env)
let env = import.meta.env

const http = axios.create({
	baseURL: env['VITE_BASE_URL'],
	timeout: 1000 * 10,
	headers: {
		'Content-Type': "application/json",
		"useragent": "general"
	},
	//自动携带凭据cookie
	withCredentials: true
});
// cosnole.log('22222',uni.getNetworkType())
// 请求拦截器
http.interceptors.request.use((config) => {
		//这几个请求不需要携带token
		let notNeed = ['/users/login', '/users/mpLogin', '/users/onekeyLogin'];
		//在请求拦截器中携带token
		// console.log(config)
		if (!notNeed.includes(config.url)) {
			let token = uni.getStorageSync('myx-token')
			config.headers.authorization = token;
		}
		// console.log(config)
		// 可以处理请求的公共参数
		return config;
	},
	(error) => {
		// do something with request error
		return Promise.reject(error);
	}
);

// 响应拦截器
http.interceptors.response.use((response) => {
		let res = response.data;
		//接口相应数据 不符合预期的时候 res.state都是false
		if (!res.state) {
			uni.showToast({
				icon: "error",
				title: res.msg
			})
			//判断登入过期
			if (res.code === "10022" || res.code === '1004') {
				//移除token
				uni.removeStorageSync('myx-token')
				//调用了一件登入的逻辑
				onekeyLogin()
				res.msg = '登入过期'
				//使用弹窗显示登入过期
				uni.showToast({
					icon: "error",
					title: res.msg
				})
				
			}
			return Promise.reject(res.msg)
		}
		return res
	},
	(error) => {
		console.log(error)
		uni.showToast({
			icon: "error",
			title: error.toString()
		})
		return Promise.reject(error);
	}
);

export default http;